// m

// 给定一个整数numCourses，代表这学期必须选修的课程数量，课程编号为0 到 numCourses- 1，再给定一个数组preequisties表示先修课程关系，其中prerequiesites[i]表示先修课程关系
// prerequiesites[i] = [ai, bi],表示如果要学习课程ai则必须要学习课程bi

// 要求：判断是否可能完成所有课程的学习，如果可以，返回true，否则，返回false

// 解题思路
// 拓扑排序
// 1. 使用列表edges存放课程关系图，并统计每门课程节点的入度，存入入度列表indegrees
// 2. 借助队列queue，将所有入度为0的节点入队
// 3. 从队列中选择一个节点，并让课程数-1
// 4. 将该顶点以及该顶点为出发点的所有边的另一个节点入度-1，如果入度-1后的节点入度不为0，则将其加入队列queue
// 5. 重复3-4的步骤，直到队列中没有节点
// 6. 最后判断剩余课程数是否为0，如果为0，则返回true，否则返回false
